#ifndef IBMPACKSIM_H
#define IBMPACKSIM_H

#include <packsiminterfaces_global.h>
#include <corelib\tools\qstring.h>
#include <corelib\tools\qmap.h>



class QGraphicsScene;

namespace PackSim

{

	class Conveyor;
	class EllipseItem;
	class ItemCreator;
	

class PACKSIMINTERFACES_EXPORT IBMPackSim
{
public:
	virtual ~IBMPackSim();

	virtual void startSimulation() = 0;
	virtual void stopSimulation() = 0;

	virtual void createConveyor(const QString& aCnvName) = 0;
	virtual void destroyConveyor() = 0;
	virtual Conveyor* getConveyor(const QString& aCnvName) = 0;

	virtual EllipseItem* createEllipseItem(Conveyor *aConveyor) = 0;
	virtual void destroyEllipseItem(EllipseItem *aEllipseItem) = 0;

	virtual ItemCreator* createItemCreator(const QString& aItemCreatorName) = 0;
	virtual void destroyItemCreator() = 0;
	virtual ItemCreator* getItemCreator(const QString& aItemCreatorName) = 0;

	virtual QMap<QString, Conveyor*> conveyorMap() const = 0;
	virtual QMap<QString, ItemCreator*> itemCreatorMap() const = 0;

	virtual QGraphicsScene* scene() = 0;


private:
	
};

}
#endif // IBMPACKSIM_H
